package com.wutuo.roster.api;

import cn.apestar.user.provider.info.domain.User;
import com.wutuo.child.api.response.ChildResponse;
import com.wutuo.roster.api.request.AuditChildApplyRequest;
import com.wutuo.roster.api.request.ParentsRequest;
import com.wutuo.roster.api.request.RosterRequest;
import com.wutuo.roster.api.request.SearchRosterRequest;
import com.wutuo.roster.api.response.RosterResponse;
import com.wutuo.roster.provider.domain.Roster;
import com.wutuo.tag.provider.domain.TagRelations;
import com.wutuo.wtservice.api.request.UserServiceRequest;

import java.util.List;

/**
 * Created by Singer_YDW on 2016/11/9.
 */
public interface RosterAPIService {

    public void addorUpdate(RosterRequest record);

    /**
     * 审核通过
     *
     * @param record
     * @return void
     * @author lvh 2016年2月3日 上午11:51:32</br>
     */
    public void applyChild(AuditChildApplyRequest record);

    /**
     * 新增花名册标签关系表
     *
     * @param rosterId
     * @return void
     * @author lvh 2016年2月3日 上午11:51:41</br>
     */
    public void addTag(List<TagRelations> tag, Long rosterId);

    /**
     * 新增家长关系表
     *
     * @return void
     * @author lvh 2016年2月3日 上午11:51:41</br>
     */
    public void addPareantRel(List<ParentsRequest> parents, Roster roster);

    /**
     * 新增家长关系表
     *
     * @return void
     * @author lvh 2016年2月3日 上午11:51:41</br>
     */
    public void addPareant(List<ParentsRequest> parents, Roster roster);

    /**
     * 新增花名册管护类型关系表
     *
     * @param rosterId
     * @return void
     * @author lvh 2016年2月3日 上午11:51:41</br>
     */
    public void addTgType(List<UserServiceRequest> userList, Long rosterId);

    /**
     * 删除花名册
     *
     * @param id
     * @return void
     * @author lvh 2016年2月3日 下午12:34:08</br>
     */
    public void del(Long id);

    /**
     * 查询
     *
     * @param request
     * @return List<RosterResponse>
     * @author lvh 2016年2月3日 下午12:34:20</br>
     */
    public List<RosterResponse> lisForPage(SearchRosterRequest request);

    /**
     * 查询
     *
     * @param request
     * @return List<RosterResponse>
     * @author lvh 2016年2月3日 下午12:34:20</br>
     */
    public List<RosterResponse> listChildByState(SearchRosterRequest request);

    /**
     * 单独查询孩子
     *
     * @param request
     * @return List<RosterResponse>
     * @author lvh 2016年2月3日 下午12:34:20</br>
     */
    public List<RosterResponse> singleList(SearchRosterRequest request);

    /**
     * 查询
     *
     * @return List<RosterResponse>
     * @author lvh 2016年2月3日 下午12:34:20</br>
     */
    public RosterResponse getRosterById(Long id);

    /**
     * 查询家长屁孩列表
     *
     * @param request
     * @return List<RosterResponse>
     * @author lvh 2016年2月3日 下午12:34:20</br>
     */
    public List<ChildResponse> getChildListByPid(SearchRosterRequest request);

    /**
     * 查询家长屁孩列表
     *
     * @param request
     * @return List<RosterResponse>
     * @author lvh 2016年2月3日 下午12:34:20</br>
     */
    public List getChildListByPidNoTask(SearchRosterRequest request);

    public List<RosterResponse> list(AuditChildApplyRequest request);

    /**
     * 增加花名册标签
     *
     * @param tagId
     * @param userId
     * @return List
     * @author lvh 2016年2月20日 下午8:16:20</br>
     */
    public void addRoasterAndTagRelations(Long tagId, String userId);

    /**
     * 删除花名册标签
     *
     * @param tagId
     * @param userId
     * @return List
     * @author lvh 2016年2月20日 下午8:16:20</br>
     */
    public void delRoasterAndTagRelations(Long tagId, String userId);

    public int countInstitutionChildren(SearchRosterRequest s);

    /**
     * 更新花名册状态
     *
     * @return
     */
    public void updateRosterState(String userId, String type);

    /**
     * 初始化花名称
     */
    public void initChild(User user);

    Roster find(Long id);
}
